Модели согласованности описывают, какие значения данных увидят клиенты при распределённых чтениях/записях.
Сильная
- Линеаризуемость (linearizability): чтение после записи видит новое значение как будто операции выполнялись последовательно в реальном времени.
Ослабленные
-
Последовательная (sequential): все видят операции в одном порядке, но не обязательно по времени.
-
Причинно-следственная (causal): сохраняет причинные связи; нет единого глобального порядка.
-
Read-your-writes / monotonic reads: клиент видит свои записи и монотонно возрастающие состояния.
-
Eventual consistency: со временем значения сходятся; возможны устаревшие чтения.
Балансировка latency/consistency
-
CAP: при сетевом разделении выбираем между доступностью и сильной консистентностью.
-
PACELC: при разделении — CAP, без разделения — баланс latency vs consistency.
Что фиксировать
-
Требования к маршрутам: где нужна линеаризуемость (балансы/лимиты), где достаточно eventual (логирование/аналитика).
-
Параметры чтения/записи (кворумы), кэширование и допустимые устаревания.
-
Наблюдаемые эффекты: фантомы, устаревшие чтения, двойные события — и как компенсируем.